package P11_异步回调CompletableFuture;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class P01_Demo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 异步调用，没有返回值
        CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(() -> {
            System.out.println(Thread.currentThread().getName() + " completableFuture1");
        });
        completableFuture1.get();

        // 异步调用，有返回值
        CompletableFuture<Integer> completableFuture2 = CompletableFuture.supplyAsync(() -> {
            System.out.println(Thread.currentThread().getName() + " completableFuture2");
//            int i = 1 / 0;
            return 1024;
        });
//        System.out.println(completableFuture2.get());
        System.out.println(completableFuture2.whenComplete((t, u) -> {
            System.out.println("t: " + t);
            System.out.println("u: " + u);
        }).get());
    }
}
